package Entity;

import java.util.Date;
import java.math.BigInteger;

/**
 * 观众行为记录表实体类（对应audience_behavior表）
 * action字段为ENUM类型，user_id支持大用户量（BigInteger）
 */
public class AudienceBehavior {
    // 行为ID（自增主键，非空）
    private Integer behaviorId;
    // 直播ID（非空，外键关联livestream.stream_id）
    private Integer streamId;
    // 观众ID（可空，支持大用户量，用BigInteger适配超10位的ID）
    private BigInteger userId;
    // 行为类型（ENUM枚举：enter-进入，comment-评论，share-分享，gift-送礼，非空）
    private ActionType action;
    // 行为时间（非空，DATETIME类型）
    private Date actionTime;
    // 行为详情（可空，TEXT类型，如评论内容）
    private String actionContent;

    // -------------------------- 枚举类：适配MySQL的action ENUM类型 --------------------------
    public enum ActionType {
        enter,   // 进入直播间
        comment, // 发表评论
        share,   // 分享直播间
        gift     // 赠送礼物
    }

    // 无参构造（必需）
    public AudienceBehavior() {}

    // Getter/Setter
    public Integer getBehaviorId() {
        return behaviorId;
    }

    public void setBehaviorId(Integer behaviorId) {
        this.behaviorId = behaviorId;
    }

    public Integer getStreamId() {
        return streamId;
    }

    public void setStreamId(Integer streamId) {
        this.streamId = streamId;
    }

    public BigInteger getUserId() {
        return userId;
    }

    public void setUserId(BigInteger userId) {
        this.userId = userId;
    }

    // 兼容JSON字符串解析（若JSON中action是字符串，可通过此方法转换为枚举）
    public void setAction(String action) {
        this.action = ActionType.valueOf(action);
    }

    public ActionType getAction() {
        return action;
    }

    public void setAction(ActionType action) {
        this.action = action;
    }

    public Date getActionTime() {
        return actionTime;
    }

    public void setActionTime(Date actionTime) {
        this.actionTime = actionTime;
    }

    public String getActionContent() {
        return actionContent;
    }

    public void setActionContent(String actionContent) {
        this.actionContent = actionContent;
    }

    // toString（调试用）
    @Override
    public String toString() {
        return "AudienceBehavior{" +
                "behaviorId=" + behaviorId +
                ", streamId=" + streamId +
                ", userId=" + userId +
                ", action=" + action +
                ", actionTime=" + actionTime +
                ", actionContent='" + actionContent + '\'' +
                '}';
    }
}